#pragma once#include "Die.h"#include <vector>template<class T1=Die, class T2=T1>class DiceGame_TwoTemplateParameters {public:
DiceGame_TwoTemplateParameters();
~DiceGame_TwoTemplateParameters();void play();int getBalance()const{return balance;}private:
T1 d1;
T2 d2;int balance;};template<class T1, class T2>
DiceGame_TwoTemplateParameters<T1, T2>::DiceGame_TwoTemplateParameters(): balance(0){}template<class T1, class T2>
DiceGame_TwoTemplateParameters<T1, T2>::~DiceGame_TwoTemplateParameters(){}template<class T1, class T2>void DiceGame_TwoTemplateParameters<T1, T2>::play(){
d1.roll();
d2.roll();int total = d1.faceValue()+ d2.faceValue();if(total >7)++balance;elseif(total <7)--balance;}
Version 3
In this version, the LoadedDie are instead "LoadedDieWithTwoAlternatinvValues", where the two values are template parameters. The DiceGame takes one template parameter. DiceGame_UsingTemplatesTest.cpp
Version 1
One template parameter, LoadedDie that can return two values.Version 2
In this version, the Dice Game takes two template parameters. Notice that because of this, we cannot put them into a vector.DiceGame_TwoTemplateParametersTest.h
DiceGame_TwoTemplateParameters.h
Version 3
In this version, the LoadedDie are instead "LoadedDieWithTwoAlternatinvValues", where the two values are template parameters. The DiceGame takes one template parameter.DiceGame_UsingTemplatesTest.cpp
DiceGame_UsingTemplates.h